package com.star.star.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.star.star.vo.StarDetailWxmentorVO;
import com.star.star.dto.StarFileAuditPageDTO;
import com.star.star.dto.StarPageDTO;
import com.star.star.dto.StarPageWebDTO;
import com.star.star.dto.StarPageWxuserDTO;
import com.star.star.entity.Star;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.star.star.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 艺人 Mapper 接口
 *
 * @author yangzj
 */
public interface StarMapper extends BaseMapper<Star> {

    /**
     * 分页
     *
     * @param dto 入参
     * @return {@link IPage}<{@link StarPageVO}>
     */
    IPage<StarPageVO> page(@Param("page") StarPageDTO dto);

    /**
     * 获取详情
     *
     * @param id ID
     * @return {@link StarDetailVO}
     */
    StarDetailVO getDetail(@Param("id") Long id);

    /**
     * 分页审核
     *
     * @param dto 入参
     * @return {@link IPage}<{@link StarFileAuditPageVO}>
     */
    IPage<StarFileAuditPageVO> auditPage(@Param("page") StarFileAuditPageDTO dto);

    /**
     * 获取审核详情
     *
     * @param id ID
     * @return {@link StarFileAuditDetailVO}
     */
    StarFileAuditDetailVO getAuditDetail(@Param("id") Long id);

    /**
     * 获取分析
     *
     * @param id ID
     * @return {@link StarAnalysisVO}
     */
    List<StarAnalysisVO.City> listCityAnalysis(@Param("id") Long id);

    /**
     * 列出性别分析
     *
     * @param id ID
     * @return {@link List}<{@link StarAnalysisVO.Gender}>
     */
    List<StarAnalysisVO.Gender> listGenderAnalysis(@Param("id") Long id);

    /**
     * 获取基础信息
     *
     * @param id     ID
     * @param userId 用户ID
     * @return {@link StarBaseInfoWxuserVO}
     */
    StarBaseInfoWxuserVO getBaseInfoWxuser(@Param("id") Long id, @Param("userId") Long userId);

    /**
     * 获取自我介绍-微信小程序（用户端）
     *
     * @param id     ID
     * @param userId 用户ID
     * @return {@link String}
     */
    String getIntroductionWxuser(@Param("id") Long id, @Param("userId") Long userId);

    /**
     * 分页-微信小程序（用户端）
     *
     * @param dto 入参
     * @return {@link IPage}<{@link StarPageWxuserVO}>
     */
    IPage<StarPageWxuserVO> pageWxuser(@Param("page") StarPageWxuserDTO dto);

    /**
     * 获取详情
     *
     * @param id     ID
     * @param userId 用户ID
     * @return {@link StarDetailWxuserVO}
     */
    StarDetailWxuserVO getDetailWxuser(@Param("id") Long id, @Param("userId") Long userId);

    /**
     * 获取详情-微信小程序（导师端）
     *
     * @param id     ID
     * @param userId 用户ID
     * @return {@link StarDetailWxmentorVO}
     */
    StarDetailWxmentorVO getDetailWxmentor(@Param("id") Long id, @Param("userId") Long userId);

    /**
     * 取top，按推广，收藏人数来排名
     *
     * @param limit 限制
     * @return {@link List}<{@link StarListVO}>
     */
    List<StarListVO> listWebTop(@Param("limit") int limit);

    /**
     * web分页
     *
     * @param dto 入参
     * @return {@link IPage}<{@link StarPageWebVO}>
     */
    IPage<StarPageWebVO> pageWeb(@Param("page") StarPageWebDTO dto);

    /**
     * 获取web详情
     *
     * @param id ID
     * @return {@link StarDetailWebVO}
     */
    StarDetailWebVO getDetailWeb(@Param("id") Long id);
}
